// https://typescript.nuxtjs.org/cookbook/plugins
import { Plugin } from '@nuxt/types'
import adminGenerator from './admin'
import clientGenerator from './client'
import authGenerator from './auth'

declare module '@nuxt/types' {
  interface Context {
    $myInjectedFunction(message: string): void
  }
}

const myPlugin: Plugin = (context, inject) => {
    // admin接口生成器
    const adminApis = adminGenerator(context.$axios)
    const clientApis = clientGenerator(context.$axios)
    const authApis = authGenerator(context.$axios)
    // 如果您需要同时在context，Vue实例，甚至Vuex中同时注入，您可以使用inject方法,它是 plugin 导出函数的第二个参数。将内容注入 Vue 实例的方式与在 Vue 应用程序中进行注入类似。系统会自动将$添加到方法名的前面。
    inject('apis', {admin: adminApis, client: clientApis, auth: authApis})
    // 使用的时候 this.$axios.$apis.admin.接口名()
}


export default myPlugin